package services

import (
	"ShopSupplierApi/models"
	"ShopSupplierApi/utils/cache"
	"encoding/json"
)

//ExpressService 快递操作服务层
type ExpressService struct{}

//ExpressServ 快递操作服务对象
var ExpressServ *ExpressService

func init() {
	ExpressServ = &ExpressService{}
}

//AddExpress 增加快递信息
//param e *Express 快递信息
func (*ExpressService) AddExpress(e *models.Express) bool {
	return models.AddExpress(e)
}

//RegionInfo 地区信息
func RegionInfo() map[string]*models.Region {
	cd := cache.Get("SupplierApi:regionInfo")
	if cd != nil {
		v := map[string]*models.Region{}
		err := json.Unmarshal(cd.([]byte), &v)
		if err == nil{
			return v
		}
	}
	v := models.RegionInfo()
	bs, err := json.Marshal(v)
	if err == nil {
		cache.Put("SupplierApi:regionInfo", bs)
	}
	return v
}

//ExpressList 快递列表
//param supplierID uint64 供应商ID
//param p *Page 数据分页信息
func (*ExpressService) ExpressList(supplierID uint64, p *models.Page) []map[string]interface{} {
	return models.ExpressList(supplierID, p)
}

//UpdateExpressCorp 编辑物流公司
//param corpID uint 物流公司ID
//param name string 物流公司名称
//param corpCode string 物理公式代码
//param website string 物流公司官网
//param requestURL string 快递查询网址
//param orderNum uint 排序
func (*ExpressService) UpdateExpressCorp(corpID uint, name string, corpCode string, website string, requestURL string, orderNum uint) bool {
	return models.UpdateExpressCorp(corpID, name, corpCode, website, requestURL, orderNum)
}

//AddExpressCorp 新增物流公司
//param name string 物流公司名称
//param corpCode string 物理公式代码
//param website string 物流公司官网
//param requestURL string 快递查询网址
//param orderNum uint 排序
func (*ExpressService) AddExpressCorp(name string, corpCode string, website string, requestURL string, orderNum uint) bool {
	return models.AddExpressCorp(name, corpCode, website, requestURL, orderNum)
}

//ExpressCorpList 物流公司列表
//param p *Page 数据分页信息
func (*ExpressService) ExpressCorpList(p *models.Page) []map[string]interface{} {
	return models.ExpressCorpList(p)
}
